<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
  xmlns="http://philonov.com/XMLSchemas/Inner-ER">
  
  <xsl:output encoding="UTF-8" indent="yes" media-type="text/xml" method="xml" version="1.0"/>

  <xsl:strip-space elements="*"/>

  <xsl:template match="TABLES">
    <schema name="{/DBMODEL/SETTINGS/GLOBALSETTINGS/@ModelName}">
      <xsl:text> 
        8 066 206-05-16
        с. Петропавловка борщаговская, ул. Полевая, 36.
      </xsl:text>
      <xsl:apply-templates/>
    </schema>
  </xsl:template>

  <xsl:template match="TABLES/TABLE">
    <table name="{@Tablename}">
      <xsl:apply-templates select="COLUMNS/COLUMN">
        <xsl:sort select="@Pos"/>
      </xsl:apply-templates>
    </table>
  </xsl:template>

  <xsl:template match="COLUMNS/COLUMN">
    <xsl:variable name="dataType">
      <xsl:call-template name="getDataType">
        <xsl:with-param name="id" select="@idDatatype"/>
      </xsl:call-template>
    </xsl:variable>
    <column 
      name="{@ColName}" 
      type="{concat($dataType, @DatatypeParams)}" 
    >
      <xsl:if test="@NotNull != '1'">
        <xsl:attribute name="nillable">true</xsl:attribute>
      </xsl:if>
      <xsl:if test="@AutoInc = '1'">
        <xsl:attribute name="auto-inc">true</xsl:attribute>
      </xsl:if>
      <xsl:if test="@DefaultValue != ''">
        <xsl:attribute name="default"><xsl:value-of select="@DefaultValue"/></xsl:attribute>
      </xsl:if>
      <xsl:if test="@Comments != ''">
        <xsl:attribute name="comment"><xsl:value-of select="@Comments"/></xsl:attribute>
      </xsl:if>
    </column>
  </xsl:template>

  <xsl:template name="getDataType">
    <xsl:param name="id"/>
    <xsl:choose>
      <xsl:when test="//SETTINGS/DATATYPES/DATATYPE[@ID = $id]/@PhysicalTypeName = ''">
        <xsl:value-of select="//SETTINGS/DATATYPES/DATATYPE[@ID = $id]/@TypeName"/>
      </xsl:when>
      <xsl:otherwise>
        <xsl:value-of select="//SETTINGS/DATATYPES/DATATYPE[@ID = $id]/@PhysicalTypeName"/>
      </xsl:otherwise>
    </xsl:choose>
  </xsl:template>

</xsl:stylesheet>
